﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/*
 定义一个泛型接口 IProcessor<T>，包含一个方法 Process。确保 T 必须实现 IComparable<T> 和 ICloneable 接口。
 实现一个类 NumberProcessor，它实现了 IProcessor<T> 接口，并对 T 进行处理。
 练习要求：
     创建一个类 IntegerItem，实现 IComparable<IntegerItem> 和 ICloneable 接口。
     使用 NumberProcessor<IntegerItem> 处理 IntegerItem 类型的实例，打印处理结果。
 */
namespace CS_BEGINNER_TO_PROFICIENT.STD.GenericitySTD
{
    public interface IProcessor<T> where T : IComparable<T>, ICloneable
    {
        void Process(T item);
    }

    public class NumberProcessor<T> : IProcessor<T> where T : IComparable<T>, ICloneable
    {
        public void Process(T item) => Console.WriteLine($"Processing item: {item}");
    }

    public class IntegerItem : IComparable<IntegerItem>, ICloneable
    {
        public int Value { get; set; }
        public IntegerItem(int value) => Value = value;

        public object Clone()
        {
            return new IntegerItem(Value);
        }

        public int CompareTo(IntegerItem other)
        {
            return Value.CompareTo(other.Value);
        }

        public override string ToString()
        {
            return Value.ToString();
        }
    }
}
